home *** CD-ROM | disk | FTP | other *** search
- <!--startcut ==========================================================-->
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
- <HTML>
- <BODY BGCOLOR="#EEE1CC" TEXT="#000000" LINK="#0000FF" VLINK="#0020F0"
- ALINK="#FF0000">
-
- <H4>
- "Linux Gazette...<I>making Linux just a little more fun!</I>"
- </H4>
-
- <P> <HR> <P>
- <!--===================================================================-->
-
- <pre>
- #! /usr/bin/perl -w
- # cleantmp: Remove old files from /tmp partition
- # Copyright (C) 1997 by Guy Geens <Guy.Geens@elis.rug.ac.be>
- # Snail Mail:
- # Zwijnaardsesteenweg 183
- # 9000 Gent
- # Belgium
-
- use File::Find;
-
- $tmpdir = '/tmp/';
- chdir ($tmpdir) || die "$tmpdir not accessible: $!";
- if ($> == 0) { # Is euid == 0?
- $test = 0;
- } else {
- # Not run by root - test only
- $test = 1;
- }
-
- @list = ();
-
- &find(\&do_files, $tmpdir);
- &find(\&do_dirs, $tmpdir);
-
- if (@list) {
- print "Cleaned $tmpdir\n";
- print "Deleted files are:\n";
- for (sort @list) {
- print "$_\n";
- }
- }
-
- exit;
-
- sub do_files {
- (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
- (-f _ || -l _ ) &&
- (int(-C _) > 3) &&
- ! ((/^\.X.*lock$/ || /^quota\.user$/ || /^quota.group$/)
- && $uid == 0) &&
- &removefile ($_) && push @list, $File::Find::name;
- }
-
- sub do_dirs {
- (/^\..*-unix$/ && $uid ==0) && ($File::Find::prune = 1) ||
- (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
- -d _ && ($nlink == 2) &&
- ! (/^lost\+found$/ && $uid == 0) &&
- &removedir ($_) && push @list, "$File::Find::name/";
- }
-
- sub removedir {
- if ( $test ) {
- 1;
- } else {
- # Can't use @_: rmdir doesn't take a list argument
- rmdir $_[0];
- }
- }
-
- sub removefile {
- if ( $test ) {
- 1;
- } else {
- unlink @_;
- }
- }
- </pre>
-
- <!--===================================================================-->
- <P> <hr> <P>
- <center><H5>Copyright © 1997, Guy Geens<BR>
- Published in Issue 20 of the Linux Gazette, August 1997</H5></center>
-
- <!--startcut ==========================================================-->
- </BODY>
- </HTML>
- <!--endcut ============================================================-->
-
-